1. Field
The present systems and methods generally relate to interacting with quantum computing systems, and particularly relate to interactions between quantum computing systems and digital computing systems.
2. Quantum Computing Systems
A quantum computing system is any computing system that employs a quantum processor. A quantum processor is any computer processor that is designed to leverage at least one quantum mechanical phenomenon (such as superposition, entanglement, tunneling, etc.) in the processing of quantum information. Many different designs for quantum processor hardware exist, including but not limited to: photonic quantum processors, superconducting quantum processors, nuclear magnetic resonance quantum processors, ion-trap quantum processors, topological quantum processors, quantum dot quantum processors, etc. Regardless of the specific hardware implementation, all quantum processors encode and manipulate quantum information in quantum mechanical objects or devices called quantum bits, or “qubits;” all quantum processors employ structures or devices for communicating information between qubits; and all quantum processors employ structures or devices for reading out a state of at least one qubit. The physical form of the qubits depends on the hardware employed in the quantum processors; e.g., photonic quantum processors employ photon-based qubits, superconducting quantum processors employ superconducting qubits, and so on.
Quantum processors may be architected to operate in a variety of different ways. For example, a quantum processor may be architected as a general-purpose processor or as a special-purpose processor, and/or may be designed to perform gate/circuit-based algorithms or adiabatic/annealing-based algorithms. Exemplary systems and methods for quantum processors are described in, for example: U.S. Pat. No. 7,135,701, U.S. Pat. No. 7,418,283, U.S. Pat. No. 7,533,068, U.S. Pat. No. 7,619,437, U.S. Pat. No. 7,639,035, U.S. Pat. No. 7,898,282, U.S. Pat. No. 8,008,942, U.S. Pat. No. 8,190,548, U.S. Pat. No. 8,195,596, U.S. Pat. No. 8,283,943, and US Patent Application Publication 2011-0022820 (also see U.S. Pat. No. 8,421,053), each of which is incorporated herein by reference in its entirety.
A quantum computing system (including a quantum processor) may interact with another computing system, such as a digital computing system. Throughout this specification and the appended claims, the term “digital computing system” and variants thereof are used to denote any “classical” or “non-quantum” computing system that performs digital processing tasks. Exemplary systems and methods for interactions between a quantum computing system and a digital computing system are described in, for example: US Patent Publication 2007-0239366, U.S. Pat. No. 7,984,012, U.S. Pat. No. 8,195,726, U.S. Pat. No. 7,870,087, U.S. patent application Ser. No. 13/300,169 (now US Patent Application Publication 2014-0025606), and U.S. patent application Ser. No. 13/806,404 (now US Patent Application Publication 2013-0282636), each of which is incorporated herein by reference in its entirety.
Digital Supercomputer
Throughout this specification and the appended claims, the term “digital supercomputer” is used to describe a high-performance digital computing system that employs a large number of digital processors (e.g., on the order of 10,000, 100,000, or more digital processors) configured in either a distributed network (e.g., grid computing, cloud computing, etc.) or in a localized computer cluster. A digital supercomputer typically far exceeds the performance of a state-of-the-art personal computer in at least one metric. For example, a digital supercomputer may be able to perform a large number of floating point operations per second (FLOPS), such as on the order of TFLOPS (i.e., 1012 FLOPS), PFLOPS (i.e., 1015 FLOPS), or more. For example, a digital supercomputer may have more memory, input bandwidth and/or output bandwidth.
There are many computational tasks which are beyond the capabilities of typical personal computers and which require a digital supercomputer in order to be completed. Examples include applications with many variables (e.g., on the order of hundreds of variables or more) and/or involving optimization, simulation, modeling, etc. Due to their immense computational resources, digital supercomputers are relatively scarce (compared to, for example, personal computers) and can be expensive to operate. A user of a digital supercomputer is typically charged (i.e., billed) according to the amount of time for which the digital supercomputer resources are used (which may be measured in a variety of different ways, including wall-clock time, total measured FLOPs, computation time, etc.). In many cases, the cost of operating a digital supercomputer is prohibitive and a potential user who cannot afford the computational resources of a digital supercomputer is forced to simplify a computational task to an approximation that can be completed using more affordable computational resources. Thus, there is a need in the art for systems and/or methods for optimizing the use of digital supercomputer systems so that, for example, the cost of completing a computational task is reduced.
Rate of Convergence in Iterative Methods
In an iterative method, such as an iterative method of optimizing a function or otherwise solving an optimization problem, multiple candidate “solutions” may be determined in series over multiple iterations. For example, a first candidate solution may be determined in a first iteration and a second candidate solution may be determined in a second iteration. In most iterative methods, successive candidate solutions are compared to the “best known solution so far” and a new candidate solution may replace the existing “best known solution so far” if it represents an improvement over the existing “best known solution so far.” For example, a first candidate solution from a first iteration may be cast as the “best known solution so far,” and if a second candidate solution from a second iteration is better than the first candidate solution than the second candidate solution may replace the first candidate solution as the “best known solution so far.” Therefore, the “quality” of the “best known solution so far” (e.g., how close the best known solution so far is to the “overall best” solution, or global optimum) may, on average, improve over successive iterations. In some cases, information about the existing “best known solution so far” may be used to influence the new candidate solutions generated in subsequent iterations. The rate of improvement in the quality of the “best known solution so far” may depend on many factors, but ultimately the “best known solution so far” may converge on the “overall best” solution. Throughout this specification and the appended claims, the term “rate of convergence” refers to the rate at which the quality of candidate solutions provided by a system or method (e.g., the quality of the “best known solution so far”) converges on the quality of the overall best solution, or global optimum. Different algorithmic approaches to optimization may be characterized by their rate of convergence.
Throughout this specification and the appended claims, the term “solution” is generally used to refer to a parameter for which a “good enough” value is determined when an optimal value is sought. In many cases, a sub-optimal value that nevertheless satisfies some solution criterion is considered to be an acceptable solution. Similarly, the term “optimized” is used throughout this specification and the appended claims to refer to a solution or function that has been through an optimization process to determine a value that satisfies at least one solution criterion. Depending on the nature of the problem or function being studied, the “solution” may correspond to a specific output (e.g., an optimized value of an objective function) or a specific input or configuration of inputs (e.g., an optimized value of at least one input parameter of a function).